home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs06.d81 / moresmrt.arc / READ (.txt) next >
GEOS ConVerT  |  2009-10-10  |  5KB  |  216 lines

  1. PRG formatted GEOS file V1.0
  2. NX1000
  3. Write
  4. BLASTER'S CONVERTER V2.5
  5. READ ME FIRST
  6. Write Image V2.0
  7. geoWrite    V2.1
  8. @;read
  9. SmartWatch real
  10. clock
  11. .if    Pass1
  12. .include    geosSym
  13. .include    geosMac
  14. .endif
  15. .psect
  16. ProgStart:    PushB    CPU_DATA    ;save
  17. config to stack ($4580)
  18.     LoadB    CPU_DATA,#IO_IN    ;turn
  19. region
  20.     sei        ;turn interrupts
  21.     LoadB    $DC02,#$0F    ;load
  22. config 4
  23. o/p's
  24.     sta    cia1base    ;states: ce
  25. true,
  26.     lda    $DC0F
  27.     and    #$7F    ;bit 7 to 0
  28.     sta    $DC0F    ;TOD clock
  29. select
  30.     jsr    SelClock    ;select
  31. clock
  32.     jsr    ReadSW    ;read
  33. secs/100 & ignore
  34.     jsr    ReadSW    ;read
  35.     sta    tmpsecs    ;save
  36.     jsr    ReadSW    ;read
  37.     sta    tmpmins    ;save
  38.     jsr    ReadSW    ;read
  39. hours
  40.     tax        ;transfer
  41.     and    #$1F    ;clear
  42. msb's
  43.     cmp    #$12    ;is
  44. twelve? (BCD)
  45.     bne    10$    ;no
  46.     txa        ;get hours back
  47.     eor    #$20    ;toggle
  48. am/pm
  49. bit (SW bit 5)
  50. 10$:    txa        ;get hours back
  51.     and    #$1F    ;clear
  52. msb's
  53.     sta    tmphrs
  54.     txa        ;retrieve
  55.     and    #$20    ;isolate
  56. SW am/pm
  57.     asl    a    ; move it to TOD AM/PM
  58.     asl    a    ; bit 7
  59.     ora    tmphrs    ;put
  60. hours
  61.     sta    temp    ;save
  62. later
  63.     sta    $DC0B    ;save
  64. TOD hours
  65.     cmp    #$12    ;is
  66. twelve?
  67.     bne    20$    ;no
  68.     lda    #0    ;otherwise
  69. 20$:    bit    temp    ;am/pm
  70.     bpl    30$    ;am - don't add 12
  71.     sed        ;decimal
  72.     clc        ;clear
  73. carry
  74.     adc    #$12    ;make
  75. clock
  76. format
  77.     cld        ;leave
  78. decimal
  79. 30$:    jsr    BCDtoHex    ;convert
  80.     sta    hour    ;save
  81. geos hours
  82.     MoveB    tmpmins,$DC0A    ;save
  83. minutes
  84.     jsr    BCDtoHex    ;convert
  85.     sta    minutes    ;save
  86. geos minutes
  87.     MoveB    tmpsecs,$DC09    ;save
  88. seconds
  89.     jsr    BCDtoHex    ;convert
  90.     sta    hour    ;save
  91. geos hours
  92.     MoveB    tmpmins,$DC0A    ;save
  93. minutes
  94.     jsr    BCDtoHex    ;convert
  95.     sta    minutes    ;save
  96. geos minutes
  97.     MoveB    tmpsecs,$DC09    ;save
  98. seconds
  99.     jsr    BCDtoHex    ;convert
  100.     sta    seconds    ;save
  101. geos seconds
  102.     LoadB    $DC08,#0    ;start
  103. clock
  104.     jsr    ReadSW        ;read
  105. ignore
  106.     jsr    ReadSW        ;read
  107.     jsr    BCDtoHex        ;convert
  108.     sta    day        ;save
  109.     jsr    ReadSW    ;read
  110. month
  111.     jsr    BCDtoHex    ;convert
  112.     sta    month    ;save
  113. month
  114.     jsr    ReadSW    ;read
  115.     jsr    BCDtoHex    ;convert
  116.     sta    year    ;save
  117.     LoadB    cia1base,#$FF    ;reset init config
  118.     sta    $DC01    ;
  119.     sta    $DC02    ;
  120.     LoadB    $DC03,#0    ;
  121.     PopB    CPU_DATA    ;reset
  122. config
  123.     cli        ;enable
  124. interrupts
  125.     jsr    EnterDeskTop    
  126. @;read
  127. ReadSW:    LoadB    $DC02,#$E    ;config
  128.     LoadB    temp,#0    ;clr
  129.     ldx    #8    ;count = 8
  130. 10$:    LoadB    cia1base,#$E    ;setup
  131. read all
  132.     LoadB    cia1base,#2    ;enable
  133.     lda    cia1base    ;read
  134.     ror    a    ;rotate
  135.     lda    temp            ;read
  136.     ror    a    ;roll carry into bit 7 of temp
  137.     sta    temp    ;save
  138.     dex        ;update
  139. count
  140.     bne    10$
  141.     lda    temp    ;temp
  142. @;BCD
  143. convert
  144. routine
  145. BCDtoHex:    pha        ;save
  146. value
  147.     and    #$F0    ;isolate
  148. nibble
  149.     lsr    a    ;and
  150. shift
  151.     lsr    a
  152.     lsr    a
  153.     lsr    a
  154.     tax        ;mark
  155. number
  156.     pla        ;get
  157. value
  158.     and    #$0F    ;clear
  159. nibble
  160.     clc        ;add
  161. times
  162. 20$:    dex
  163.     bmi    10$
  164.     adc    #$0A
  165.     bne    20$
  166. 10$:    rts
  167. @;select
  168. clock
  169. SelClock:
  170. @;select
  171. clock
  172. SelClock:    LoadB    cia1base,#$0E    ;read
  173. cycle
  174. start
  175. dallas
  176.     LoadB    cia1base,#2
  177.     LoadB    cia1base,#$0E
  178.     LoadB    temp,#2    ;loop
  179. counter
  180. 10$:    lda    #$C5
  181.     jsr    WriteByte
  182.     lda    #$3A
  183.     jsr    WriteByte
  184.     lda    #$A3
  185.     jsr    WriteByte
  186.     lda    #$5C
  187.     jsr    WriteByte
  188.     dec    temp    ;decrement
  189. counter
  190.     bne    10$
  191. @;write
  192. WriteByte:    tax        ;save
  193.     ldy    #$8    ;set
  194. count
  195.     LoadB    cia1base,#$0C    ;initial
  196. config output
  197. enable
  198.     txa        ;retrieve
  199. 10$:    and    #$1    ;clr
  200.     sta    cia1base
  201.     ora    #$0C    ;write
  202.     sta    cia1base
  203.     dey        ;decrement
  204. count
  205.     beq    20$    ;finished?
  206.     txa        ;get
  207.     lsr    a    ;select
  208.     tax        ;save
  209.     bra    10$    ;loop
  210. 20$:    rts
  211. @.ramsect
  212. tmphrs:    .block    1
  213. tmpmins:    .block    1
  214. tmpsecs:    .block    1
  215. temp:    .block    1
  216.